#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define FNAME out.txt

static int daemonize(){
    pid_t pid;
    int fd;
    pid = fork();
    if(pid < 0) {
        return -1;
    }
    fd = open("/dev/null",O_RDWR);
    if (fd < 0){
        perror("open()");
        return -1;
    }
    dup2(fd,0);
    dup2(fd,1);
    dup2(fd,2);
    if(fd > 2){
        close(fd);
    }
    setsid();
    chdir("/");   //改变工作路径到别的地方，防止出现问题
    umask(0);   //确定没有文件产生时，关闭umask
}


int main(){
    //

      //实现守护进程
    if (daemonize()){
        perror("dam")
    }

    //设计守护进程的功能：向文件持续写数字
    FILE *fp;
    fp = fopen(FNAME, "w");
    if(fp == NULL){
        perror("fopen()");
        exit(1);
    }
    for(int i= 0;;i++){
        fprintf(fp,"%d\n",i);
        fflush();
        sleep(1);
    }




    //




    exit(0);
}